package com.zp.self.module.level_4_算法练习.算法.双指针.左右指针;
import org.junit.Test;

/**
 * @author By ZengPeng
 */
public class 力扣_905_按奇偶排序数组 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_905_按奇偶排序数组().new Solution();
        System.out.println(solution);
    }

    /**
     题目：给你一个整数数组 nums，将 nums 中的的所有偶数元素移动到数组的前面，后跟所有奇数元素。
          返回满足此条件的 任一数组 作为答案。

     示例 1：
     输入：nums = [3,1,2,4]
     输出：[2,4,3,1]
     解释：[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。

     示例 2：
     输入：nums = [0]
     输出：[0]

     分析：【P 💖】
        1.双指针：记录下一个偶数应该插入的位置，遇到偶数与之交换
                --执行耗时:0 ms,击败了100.00% 的Java用户
                --编码耗时：[10:00]

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[] sortArrayByParity(int[] nums) {
        int mark = 0;
        for (int i = 0; i < nums.length; i++) {
            if(nums[i]%2==0){
                if(mark!=i){
                    nums[mark] = nums[i]^nums[mark];
                    nums[i] = nums[i]^nums[mark];
                    nums[mark] = nums[i]^nums[mark];
                }
                mark++;
            }
        }
        return nums;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}